Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
/
Звіт
про виконання лабораторної роботи №2
з дисципліни:
“Програмування, частина 3 (Структури даних та алгоритми)”
на тему:“ Внутрішнє представлення в пам’яті комп’ютера статичних даних похідних типів ”
Львів
2017
Мета: дослідження внутрішнього представлення в пам’яті комп’ютера похідних типів даних статичної структури.
Постановка задачі
Дослідити внутрішнє представлення примітивних, складних та похідних типів даних статичної структури на прикладі змінних таких типів даних, які задані у завданні за варіантом.
( {день народження студента} * {місяць народження студента} ) % 6 = ( 25* 12 ) % 6 = 0;
В звіті для кожної змінної похідного типу окремо показати представлення в пам'яті комп’ютера кожного її елемента, а після об’єднання всіх цих представлень у складену структуру даних, підписати і пояснити вміст кожного байта цієї структури.
Змінні які потрібно проаналізувати:
short m3[][2][4] = {{{1,2,3,4},{5}},{{6,7}},{{},{8,9}}};
m3[2][1][0] = 0
m3[0][0][1] = 9
m3[1][1][2] = 5
m3[0][1][2] = 8
m3[2][1][3] = 4
m3[2][0][0] = 6
m3[1][1][1] = 9
m3[1][0][1] = 5
m3[2][0][1] = 8
m3[2][1][2] = 9
Об’єднання:
union {
int up1;
short up2;
double up3;
char up4[3][2];
bool up5;
color up6;
vkaz up7;
float up8;
str up9;
}un2;
un2.up3 = 30000;
un2.up6 = BROWN;
3) Структура
struct info {
char p1[11];
double p2;
short p3;
unsigned p4 : 5 + 5;
vkaz p5;
unsigned : 2 + 3;
} st1 = { "Lviv", 5, 505, 17, &b };
Система тестів
1) Аналіз представлення в пам’яті змінної: m3
short m3[][2][4] = {{{1,2,3,4},{5}},{{6,7}},{{},{8,9}}};
m3[2][1][0] = 0
m3[0][0][1] = 9
m3[1][1][2] = 5
m3[0][1][2] = 8
m3[2][1][3] = 4
m3[2][0][0] = 6
m3[1][1][1] = 9
m3[1][0][1] = 5
m3[2][0][1] = 8
m3[2][1][2] = 9
Даний тип даних – трьох вимірний масив типу short.
Тип short у пам’яті комп’ютера займає 2 байти. Ті комірки пам’яті, значення яких не задані у рядку ініціалізації масиву - по замовчуванню рівні 0. В пам'яті комп'ютера елементи масиву з першого до останнього запам'ятовуються в послідовних зростаючих комірках пам'яті. Між елементами масиву в пам'яті розриви відсутні. Елементи масиву з найменшим індексом зберігаються по найменшій адресі пам’яті. Багатовимірні масиви зберігаються так, що найбільш правий індекс збільшується першим.
Розмір змінної m3 48 байт
Внутрішнє представлення змінної m3 в пам'яті комп’ютера: 0100 0900 0300 0400 0500 0000 0800 0000 0600 0500 0000 0000 0000 0900 0500 0000 0600 0800 0000 0000 0000 0900 0900 0400.
2) Аналіз представлення в пам’яті змінної: un2
• Розглянемо структуру даних – «об’єднання» :
union {
int up1; //Чотирибайтовий знаковий цілий тип
short up2; //Двобайтовий знаковий цілий тип
double up3; //Восьми байтовий дійсний тип даних
char up4[3][2]; //Двовимірний масив типу char - розмір 12 байт
bool up5; //Логічний тип даних (булівський) 1 байт
color up6; //Перелічуваний тип даних розмір змінної 4 байти
vkaz up7; //Вказівник на булівський тип даних
float up8; //Змінна дійсного типу одинарної точності 4 байти
str up9; //Структура
}un1, un2, un3, un4;
Об'єднання дуже схожі на структури. Однак на відміну від структури об'єднання зберігає значення тільки одного елемента в кожний момент часу. Інакше кажучи, коли виконується операція присвоювання значення елементу об'єднання, то перезаписується будь-яке попереднє присвоювання.
Головною особливістю об'єднання є те, що для кожного з оголошених елементів виділяється та сама область пам'яті, тобто вони перекриваються. Пам'ять, що відповідає змінній типу об'єднання, визначається величиною, необхідною для розміщення найбільш довгого елемента об'єднання. Коли ви...